#pragma once
#ifndef PLANESYSTEM2_H
#define PLANESYSTEM2_H
#define byte win_byte_override
#include <QtWidgets/QMainWindow>
#include <qpushbutton.h>
#include <qlabel.h>
#include <QFileDialog>
#include <QPainter>
#include <string>
#include <QMouseEvent>
#include <QVariant>
#include <string>
#include "ui_planesystem2.h"
#include "include/LoginDialog.h"
#include "include/cssStyle.h"
#include "include/client.h"
#include "include/plane.h"
#include "include/trip.h"
#undef byte

using namespace std;

class PlaneSystem2 : public QMainWindow
{
    Q_OBJECT

public:
    PlaneSystem2(QWidget *parent = nullptr);
    ~PlaneSystem2();
    QPushButton* getLoginButton();

signals:
    void mainScreenClicked();


private slots:
    void onLoginButtonClicked();
    void onMainWindowClicked();
    void onAvatarButtonClicked();
    void onMoreFunButtonClicked();
    void onClientMegButtonClicked();
    void onClientMegButtonCloseClicked();
    void onTicketMsgButtonClick();
    void onTicketMegButtonCloseClicked();
    void onBookButtonClicked();
    void onBookingButtonClicked();
    void onClientMegBookingTripButtonClicked();
    void onBookTicketMsgButtonClick();
    void onBookTicketMegButtonCloseClicked();
    void onRefundButtonClicked();

public slots:
    void updateLoginStatus();

private:
    Ui::PlaneSystem2Class *ui;
    int WindowWidth;
    int WindowHeight;
    bool isLoggedIn;
    Client* currentClient;
    Trip* trip;
    QPushButton* loginButton;
    

    //样式变量
    CssStyle* cssStyle;

    // 登录窗口变量
    LoginDialog* login;

    //Widget 侧边窗口变量
    QWidget* sidePanel;
    QWidget* clientMegPanel;
    QWidget* bookTripPanel;
    QWidget* bookTicketMegPanel;
    QPushButton* avatarButton;
    QPushButton* clientMegButton;
    QPushButton* bookingButton;
    QPushButton* refundButton;
    QLabel* clientNameLabel;


    // 更多功能侧边窗口变量
    QPushButton* moreFunButton;
    QWidget* moreFunsidePanel;

    // 机票订购窗口
    QWidget* ticketBookWindow;
    QWidget* ticketMegPanel;
    QPushButton* ticketMsgButton;


    //窗口初始化设计
    void InitWindows();
    //登录按钮制作
    void LoginButton();
    // 侧方面板制作
    void InitSidePanel();
    // 更多功能按钮制作
    void MoreFunButton();
    // 更多功能侧方面板制作
    void InitMoreFunSidePanel();
    // 机票订购窗口
    void InitTicketBookWindow();
    // 查看订票信息按钮制作
    QPushButton* TicketMsgButton(QWidget* parent,QString address, QString time, QString price);
    // 订票信息按钮信息面板
    void InitTicketMegButtonPanel(QPushButton *parent,QString address, QString time, QString price);
    // 个人信息面板
    void InitClientMegButtonPanel();
    // 航班信息面板
    void InitTicketMegButtonPanel(const Trip& trip);
    // 个人信息-订票信息面板
    void InitClientMegBookingTripButtonPanel();
    void InitBookTicketMegButtonPanel(const Trip& trip, string time);

    // 重写鼠标事件
    void mousePressEvent(QMouseEvent* event);
    bool eventFilter(QObject* obj, QEvent* event);
};

/*功能函数*/
// 标签制作
vector<QLabel*> MakeInfoLabel(QWidget* parent, CssStyle* cssStyle, QString key, QString value);





#endif // PLANESYSTEM2_H